Chapter 3 Array and Data Structure Allocation and Access

#CSAPP
在不考虑编译器优化以及十分小的情况下,以下三种复合数据基本储存在栈上

数组

(多维)数组有规律地访存时,编译器(-O1)会识别模式并以加法优化掉每次访存的乘法运算

结构体

共用体

对齐

现行的机器即使数据没有对齐也能处理,不过对齐的数据处理速度普遍更快。

对齐的基本规则为:any primitive object of K bytes must have an address that is a multiple of K。

根据硬件要求、软件约定,还有一些额外的对齐要求:

对于结构体的内存布局而言

分配地址时:结构体的对齐要求是最严格的成员对齐要求,数组的对齐要求就是其成员的对齐要求